<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        title {
            line-height: 40px;
            font-weight: bold;
            text-align: center;
        }

        .list .item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin: 20px;
        }

        .list .item img {
            width: 60px;
        }
    </style>
</head>

<body>
    <!-- 由于Vue实例对象挂载到#app表示的dom节点上，
        所有Vue实例对象身上定义的数据和方法就可以在这个dom节点内部使用(在dom节点外部不可以使用) -->
    <div id="app">
        <div class="title">任务列表</div>
        <div class="list">
            <!-- 列表渲染，使用data中定义的数据，渲染出多个任务，形成一个列表 -->
            <!-- 列表渲染，使用vuejs提供的指令 v-for，也可以配合key属性一起使用   key属性一般是个唯一值-->
            <!-- 列表渲染，v-for="(item,index) in tasklist" -->

            <!-- {{ 表达式 或 变量 }} 也叫做插值表达式(双大括号), 会解析/计算内部表达式或变量的值，只能用在标签的内容区 -->
            <!-- 属性指的绑定，当属性值中式有变量，需要计算时，属性名称前必须有v-bind：否则属性值无法正常解析 -->
            <!-- v-bind:属性名="属性值",属性值可以是变量，也可以是表达式-->
            <!-- 如果属性值中没有变量，也不需要计算，就是固定的字符串，则不需要在属性名前面添加v-bind： -->
            <!-- 在key前面加v-bind：会消除警告 -->
            <!-- v-bind:属性名="属性值"  简写 :属性名="属性值"  -->
            <!-- v-on:事件类型="js代码" -->
            <!-- v-on:事件类型="函数名" -->
            <!-- v-on:事件类型="函数名(参数)" -->
            <!-- v-on:事件类型="函数名"   简写为 @事件类型="函数名" -->
            <div class="item" v-for="(item,index) in tasklist" :key="index">
                <div class="left">
                    <img :src="item.pic" alt="">
                </div>
                <div class="middle">
                    <div class="name">{{item.name}}</div>
                    <div class="desc">{{item.desc}}</div>
                </div>
                <div class="right">
                    <button @click="changeStatus(item)">{{item.status==1?'去完成':(item.status==2?'领取':'已领取')}}</button>
                </div>
            </div>
        </div>
    </div>
    <!-- 这个js文件对外暴露了一个Vue构造函数，我们可以使用Vue构造函数实例化Vue对象 -->
    <script src="./vue-2.5.21.js"></script>
</body>

</html>
<script>
    //实例化Vue对象
    var v = new Vue({
        //这个位置放置Vuejs规定的一些选项（这些选项的名字式固定的，另外这些选项是可选的）
        el: '#app',  //el表示Vue实例挂载的dom节点
        data: {//data 定义响应式数据，data的类型可以是对象，也可以是函数
            tasklist: [
                { id: 1, pic: './img/1.jpg', name: '咪咕视频送流量', desc: '每月领500MB流浪', status: 1 },
                { id: 2, pic: './img/2.jpg', name: '咪咕视频送福利', desc: '每月领800MB流浪', status: 2 },
                { id: 3, pic: './img/3.jpg', name: '咪咕视频送套餐折扣券', desc: '每月领1500MB流浪', status: 3 },
                { id: 4, pic: './img/4.jpg', name: '咪咕视频送超级秒杀', desc: '每月领5500MB流浪', status: 1 },
            ]
        },    
        //data:function(){ return{} },  //使用函数的写法，可以在实例化对象时临时生成一个新的数据
        computed: {}, //computed 定义计算属性
        watch: {},    //watch 定义数据监听
        methods: {  //methods 定义方法(函数)
            changeStatus(item) { //这个方法的参数是 点击任务对象
                if(item.status==1){
                    item.status=2
                }else if(item.status==2){
                    item.status=3
                }
            }
        },
        filters: {},  //filters  定义过滤器
        directives: {}, //directives: 定义自定义指令
        components: {},  //components  注册局部组件
    })
    console.log(v);

</script>